package beans;

import java.util.List;

import javax.naming.NamingException;

import org.richfaces.component.html.HtmlDataTable;

import co.edu.uniquindio.ondas.delegados.AdministradorDelegado;
import co.edu.uniquindio.ondas.dtos.ResumenInvestigacionDTO;
import co.edu.uniquindio.ondas.entidades.Asesor;
/**
 * @author Javier
 *Bean para el Asesor del Sistema
 */
public class AsignarAsesorBean {
	
	private AdministradorDelegado administradorDelegado;
	private HtmlDataTable tablaInvestigacion;
	private ResumenInvestigacionDTO investigacionSeleccionada=new ResumenInvestigacionDTO(0, 0, null, null, null, null, 0,null);
	private List<ResumenInvestigacionDTO> listaInvestigaciones;
	private HtmlDataTable tablaAsesores;
	private Asesor asesorSeleccionado=new Asesor();
	private List<Asesor> listaAsesores;
	
	
	/**
	 *Metodo constructor
	 * @throws NamingException
	 */
	public AsignarAsesorBean() throws NamingException {
		administradorDelegado=new AdministradorDelegado();
	}
	
	/**
	 * Metodo que obtiene las Investigaciones dispuestas A ser Asignadas
	 * @return "asignarAsesor"
	 */
	public String obtenerInvestigacionesAsignar()
	{
		listaInvestigaciones=administradorDelegado.obtenerInvestigacionAsignarAsesor();
		return "asignarAsesor";
	}
	
	/**
	 * Metodo que permite obtener la Lista de Asesores registrados en el sistema
	 * @return "seleccionarAsesorInvestigacion"
	 */
	public String obtenerListaAsesores()
	{
		investigacionSeleccionada=(ResumenInvestigacionDTO) getTablaInvestigacion().getRowData();
		listaAsesores=administradorDelegado.obtenerAsesoresLinea(investigacionSeleccionada.getIdLinea());
		return "seleccionarAsesorInvestigacion";
	}
	
	/**
	 * metodo que permite obtener desde interfaz el Asesor seleccionado
	 * @return
	 */
	public String obtenerSeleccion()
	{
		asesorSeleccionado=(Asesor) getTablaAsesores().getRowData();
		return "";
	}
	
	/**
	 * Metodo que permite Asignar un Asesor a una Investigacion 
	 * @return obtenerInvestigacionesAsignar()Metodo que obtiene las investigaciones dispuestas a Asignarle un Asesor
	 */
	public String asignarAsesor()
	{
		
		administradorDelegado.asignarAsesorInvestigacion(asesorSeleccionado, investigacionSeleccionada.getIdInvestigacion());
		return obtenerInvestigacionesAsignar();
	}

	/**
	 *Metodo accesor del atributo administradorDelegado
	 * @return the administradorDelegado
	 */
	public AdministradorDelegado getAdministradorDelegado() {
		return administradorDelegado;
	}

	/**
	 *Metodo Modificador del atributo administradorDelegado
	 * @param administradorDelegado the administradorDelegado to set
	 */
	public void setAdministradorDelegado(AdministradorDelegado administradorDelegado) {
		this.administradorDelegado = administradorDelegado;
	}

	/**
	 *Metodo accesor del atributo tablaInvestigacion
	 * @return the tablaInvestigacion
	 */
	public HtmlDataTable getTablaInvestigacion() {
		return tablaInvestigacion;
	}

	/**
	 *Metodo Modificador del atributo tablaInvestigacion
	 * @param tablaInvestigacion the tablaInvestigacion to set
	 */
	public void setTablaInvestigacion(HtmlDataTable tablaInvestigacion) {
		this.tablaInvestigacion = tablaInvestigacion;
	}

	/**
	 *Metodo accesor del atributo investigacionSeleccionada
	 * @return the investigacionSeleccionada
	 */
	public ResumenInvestigacionDTO getInvestigacionSeleccionada() {
		return investigacionSeleccionada;
	}

	/**
	 *Metodo Modificador del atributo investigacionSeleccionada
	 * @param investigacionSeleccionada the investigacionSeleccionada to set
	 */
	public void setInvestigacionSeleccionada(
			ResumenInvestigacionDTO investigacionSeleccionada) {
		this.investigacionSeleccionada = investigacionSeleccionada;
	}

	/**
	 *Metodo accesor del atributo listaInvestigaciones
	 * @return the listaInvestigaciones
	 */
	public List<ResumenInvestigacionDTO> getListaInvestigaciones() {
		return listaInvestigaciones;
	}

	/**
	 *Metodo Modificador del atributo listaInvestigaciones
	 * @param listaInvestigaciones the listaInvestigaciones to set
	 */
	public void setListaInvestigaciones(
			List<ResumenInvestigacionDTO> listaInvestigaciones) {
		this.listaInvestigaciones = listaInvestigaciones;
	}

	/**
	 *Metodo accesor del atributo tablaAsesores
	 * @return the tablaAsesores
	 */
	public HtmlDataTable getTablaAsesores() {
		return tablaAsesores;
	}

	/**
	 *Metodo Modificador del atributo tablaAsesores
	 * @param tablaAsesores the tablaAsesores to set
	 */
	public void setTablaAsesores(HtmlDataTable tablaAsesores) {
		this.tablaAsesores = tablaAsesores;
	}

	/**
	 *Metodo accesor del atributo asesorSeleccionado
	 * @return the asesorSeleccionado
	 */
	public Asesor getAsesorSeleccionado() {
		return asesorSeleccionado;
	}

	/**
	 *Metodo Modificador del atributo asesorSeleccionado
	 * @param asesorSeleccionado the asesorSeleccionado to set
	 */
	public void setAsesorSeleccionado(Asesor asesorSeleccionado) {
		this.asesorSeleccionado = asesorSeleccionado;
	}

	/**
	 *Metodo accesor del atributo listaAsesores
	 * @return the listaAsesores
	 */
	public List<Asesor> getListaAsesores() {
		return listaAsesores;
	}

	/**
	 *Metodo Modificador del atributo listaAsesores
	 * @param listaAsesores the listaAsesores to set
	 */
	public void setListaAsesores(List<Asesor> listaAsesores) {
		this.listaAsesores = listaAsesores;
	}
	
	
	
	
	
//	public HtmlDataTable getTablaInvestigacion() {
//		return tablaInvestigacion;
//	}
//	public void setTablaInvestigacion(HtmlDataTable tablaInvestigacion) {
//		this.tablaInvestigacion = tablaInvestigacion;
//	}
//	public ResumenInvestigacionDTO getInvestigacionSeleccionada() {
//		return investigacionSeleccionada;
//	}
//	public void setInvestigacionSeleccionada(
//			ResumenInvestigacionDTO investigacionSeleccionada) {
//		this.investigacionSeleccionada = investigacionSeleccionada;
//	}
//	public List<ResumenInvestigacionDTO> getListaInvestigaciones() {
//		return listaInvestigaciones;
//	}
//	public void setListaInvestigaciones(
//			List<ResumenInvestigacionDTO> listaInvestigaciones) {
//		this.listaInvestigaciones = listaInvestigaciones;
//	}
//	public HtmlDataTable getTablaAsesores() {
//		return tablaAsesores;
//	}
//	public void setTablaAsesores(HtmlDataTable tablaAsesores) {
//		this.tablaAsesores = tablaAsesores;
//	}
//	public Asesor getAsesorSeleccionado() {
//		return asesorSeleccionado;
//	}
//	public void setAsesorSeleccionado(Asesor asesorSeleccionado) {
//		this.asesorSeleccionado = asesorSeleccionado;
//	}
//	public List<Asesor> getListaAsesores() {
//		return listaAsesores;
//	}
//	public void setListaAsesores(List<Asesor> listaAsesores) {
//		this.listaAsesores = listaAsesores;
//	}
	
}
